home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 September / Macworld (1997-09).dmg / Serious Software / Cherwell Scientific Demos / pro Fit / pro Fit 5.0 demo (fpu).sea / pro Fit 5.0 demo (fpu) / External Modules / External modules sources / Pascal / Multiply.p < prev    next >
Text File  |  1996-04-21  |  4KB  |  142 lines

  1. {************************************************************************************}
  2. {  Multiply.c                                                          }
  3. {                                                                           }
  4. {                                                                           }
  5. {  Version 26.9.94                                                      }
  6. {************************************************************************************}
  7.  
  8. unit user;
  9.  
  10. interface
  11. {$IFC UNDEFINED THINK_PASCAL }
  12.     uses
  13.         Types, fp, proFit_interface;
  14. {$ELSEC}
  15.     uses
  16.         proFit_interface;
  17. {$ENDC}
  18.  
  19.  
  20.   {$MAIN}
  21.   { this directive tells the compiler that the next routine is the main entry }
  22.     procedure main (selector: integer; pb: ExtModulesParamBlockPtr);
  23.  
  24.  
  25.  
  26. implementation
  27.  
  28. { note: MPW users must make sure that the procedure main is at the beginning of the compiled code }
  29. { under Think Pascal, this is cared for by the compiler }
  30. { We let main call a function mainMain to make sure that the code starts with a jump to }
  31. { our entry point even when compiling under MPW Pascal }
  32.  
  33.     procedure mainMain (selector: integer; pb: ExtModulesParamBlockPtr);
  34.     forward;
  35.     procedure main (selector: integer; pb: ExtModulesParamBlockPtr);
  36.  
  37.     begin
  38.         mainMain(selector, pb);
  39.     end;
  40.  
  41.  
  42.  
  43.  
  44.  
  45. {************************************************************************************}
  46.  
  47.     procedure SetUp (var moduleKind: integer;    { set moduleKind to isFunction or isProgram }
  48.                                     var name: Str255;             { the name of the program or function }
  49.                                     var requiredGlobals: longint;     { the number of bytes to be allocated in ExtModulesParamBlock.globals }
  50.                                         { set requiredGlobals to 0 if you don't use this feature }
  51.                                     pb: ExtModulesParamBlockPtr);    { the complete parameter block passed by pro Fit to the }
  52.                                         { routines defined in this file. In most cases it can be ignored }
  53. { SetUp is called once when the external module is linked to pro Fit }
  54.     begin
  55.         moduleKind := isProgram;
  56.         name := 'Multiplication Table';
  57.         requiredGlobals := 0;
  58.     end;
  59.  
  60.  
  61. {************************************************************************************}
  62.  
  63.     procedure InitializeProg (pb: ExtModulesParamBlockPtr);
  64. { Can be left emtpy if not needed. }
  65. { called when the external module is linked to proFit after SetUp was called }
  66. { can be used to inititialize global variables, etc. }
  67.     begin
  68.     end;
  69.  
  70.  
  71.  
  72. {************************************************************************************}
  73.  
  74.     procedure Run (pb: ExtModulesParamBlockPtr);
  75. { pro Fit calls this function when the name of the program is chosen from the }
  76. { Run Program submenu in the menu Calc }
  77.         var
  78.             i, j: integer;
  79.     begin
  80.         for i := 1 to nrRows do
  81.             for j := 1 to nrCols do
  82.                 SetData(i, j, i * j);
  83.     end;
  84.  
  85.  
  86.  
  87. {************************************************************************************}
  88.  
  89.     procedure CleanUp (pb: ExtModulesParamBlockPtr);
  90.     { called when the function or program is removed from pro Fit's menus }
  91.     { in most cases, this function can be empty }
  92.     begin
  93.     end;
  94.  
  95.  
  96. {***********************************************************************************************}
  97.  
  98. { This is the main procedure through which all calls to the external module go.                    }
  99. { Main takes care of calling the right procedure with the right parameters depending on        }
  100. { the value of "selector".                                                                            }
  101. { You don't need to touch this procedure                                                            }
  102.  
  103.     procedure mainMain (selector: integer; pb: ExtModulesParamBlockPtr);
  104. {$IFC NOT UNDEFINED SET_A4}
  105.         var
  106.             oldA4: longint;
  107. {$ENDC}
  108.     begin
  109. {$IFC NOT UNDEFINED SET_A4}
  110.         oldA4 := SetCurrentA4;
  111. {$ENDC}
  112.         Startup(pb);
  113.         case selector of
  114.             kSetup: 
  115.                 begin
  116.                     pb^.requiredGlobals := 0;
  117.                     pb^.versionNumber := VERSIONNUMBER;
  118.                     if sizeof(extended) = 10 then
  119.                         pb^.codeType := CPU68noFPU
  120.                     else if sizeof(extended) = 12 then
  121.                         pb^.codeType := CPU68FPU
  122.                     else
  123.                         pb^.codeType := CPUPowerPC;
  124.  
  125.                     SetUp(pb^.moduleKind, pb^.name, pb^.requiredGlobals, pb);
  126.                 end;
  127.             progInitialize: 
  128.                 InitializeProg(pb);
  129.             progRun: 
  130.                 Run(pb);
  131.             kCleanUp: 
  132.                 CleanUp(pb);
  133.             otherwise
  134.         end;
  135. {$IFC NOT UNDEFINED SET_A4}
  136.         oldA4 := SetA4(oldA4);
  137. {$ENDC}
  138.     end;
  139.  
  140.  
  141.  
  142. end.